框架和函式庫是新手在寫程式初期常常會混淆的知識。
但其實只要理解他們兩個的不同處,就可以很輕鬆了分辨出來,今天就讓我們好好了解一下他們吧!
把想要做的事情寫成函式,再分門別類集合起來。
當程式設計師們再寫程式的時候方現一件事,如果我要重複做某件事的時候,一直寫整段長長的程式真的會很麻煩,所以他們就把會需要做到的事情寫成一個「函式」,就像Excel中的SUM、MIN。然後把他們功能類型相同的歸類在同一個函式庫,比如Python中數據操作的放在Numpy、數據蒐集的放在BeautifulSoup……等。
這樣有兩個好處,第一個是如果你有需求,不用一個一個函式去抓下來;第二個好處是,因為他已經分門別類了,所以只要下載相應的函式庫就好,不用一次全部抓下來占空間。
下面就介紹一些常用的函式庫:
想認識更多相關的資料庫可以看這兩篇我覺得寫得很好的文章Python零基礎到kaggle-Day3、終於把所有的Python庫,都整理出來囉!
也可以直接到Python的官網了解。
把會用到的函式都先包山包海裝到一起,還幫你做出基本的架構。
框架與函式庫最大的不同就是,他已經幫你把整件事情的流程都統合出來了,接下來你要做的事情只有依照你的想法,把需要的東西放到相應的位置就好了。
這樣可以解決寫一個程式需要去下載很多函式庫的問題,而且因為有基礎的骨架,所以後續要應用就非常方便。
這邊也舉幾個常用在機器學習的框架:
要注意的是,它的主要設計者曾說:「Keras被認為是一個介面,而不是獨立的機器學習框架。」
由此可知,Keras主要是配合TensorFlow、Theano、CNTK等框架運行的。
看完上面的介紹,應該可以大概理解「程式庫」、「框架」的區別了吧?
如果你有事先查過這兩者,應該常常看到這個解釋:
You call library. Framework calls you.
簡單來說,就是如果你是用程式庫,那只有在你需要的時候才會把他叫進來;但如果你用框架,就是一個被他牽著走的過程,因為主要的流程他都架好了,你需要做的就是填入你的參數。
這樣應該很好理解各自的優缺點,框架的優點就是寫程式的過程比函式庫方便,因為你只需要按照他的規則走,填入少少的程式碼,其他細節他會幫你處理,你可以得到你想要的模型。但缺點就是你會被他限制住,即使有些地方不和你的異你也得照著做。
而函式庫就自由多了,你想要用就引進來,不要用就不要用。但缺點也很明顯,你必須要從基礎一步步架構起來。
我們再來看一些好玩的解釋!這就像你要寫一個魔法陣,函式庫就像是給你許多不同的陣符群,法術符文群裡面有雷擊、火烈、急凍等;攻擊符文群裡有衝撞、投石、暴雨梨花針(?);控制符文群裡有迷惑、昏亂、束縛,你需要用那些就把那些放進去。
框架就像是一個已經畫好的陣圖,你想要做什麼就在相應的位置填上去就好了,非常方便。但如果你會用到裡面沒有的東西,比如在專門做法術的框架裡要加入暴雨梨花針,可能就會遇到困難。
這樣形容會比較有概念嗎XD
希望你們能看懂,不管是用哪種解釋方式。這兩種沒有優劣,只是看你當下的需求,選擇一種最好的方式。
明天來介紹Python吧。
先去睡啦,經過第一次上傳的時候不小心按到叉叉後又重新打一遍……我已經要乾掉惹。